Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - [Risolto]Nascondere input da tastiera (console) con degli asterischi
Forum - C/C++ - [Risolto]Nascondere input da tastiera (console) con degli asterischi

Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 17:44
Martedì, 23/04/2013
Salve a tutti, ultimamente mi sono posto un problema sciocco riguardante l' input con la funzione "cin", E' possibile visualizzare asterischi invece delle lettere premute. Mi è venuto in mente :idea: il metodo che forse la funzione cin adotta: ogni carattere che si preme lo inserisce in un buffer (o per meglio dire una variabile) e fa istantaneamente l' echo di windows del carattere. A me servirebbe una funzione che non fa vedere i caratteri che si premono ma qualcosa a piacere (In questo mio caso *), è possibile questo  :-?. In ogni caso; grazie in anticipo :).


Edit, Ho trovato il codice su questo sito http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=10 ...:

Per chi volesse il codice eccolo qui:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <ctype.h>
  4.  
  5. int main()
  6. {
  7.   int ch;
  8.   char pword[BUFSIZ];
  9.   int i = 0;
  10.  
  11.   puts ("Enter your password");
  12.   fflush(stdout);
  13.  
  14.   while ((ch = getch()) != EOF
  15.           && ch != '\n'
  16.           && ch != '\r'
  17.           && i < sizeof(pword) - 1)
  18.   {
  19.     if (ch == '\b' && i > 0)
  20.     {
  21.       printf("\b \b");
  22.       fflush(stdout);
  23.       i--;
  24.       pword[i] = '\0';
  25.     }
  26.     else if (isalnum(ch))
  27.     {
  28.       putchar('*');
  29.       pword[i++] = (char)ch;
  30.     }
  31.   }
  32.  
  33.   pword[i] = '\0';
  34.  
  35.   printf ("\nYou entered >%s<", pword);
  36.  
  37.   return 0;
  38. }
  39.  
  40. /*
  41.  * Program output
  42.  Enter your password
  43.  ********
  44.  You entered >security<
  45.  
  46.  *
  47.  */


Ultima modifica effettuata da Michael.Kiske il 24/04/2013 alle 8:41
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 17:56
Martedì, 23/04/2013
Ciao !

Con il c, è possibile tale effetto combinando le funzioni kbhit()  - http://www.programmingsimplified.com/c/conio.h/kbhit - e getchar().

PM Quote
Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 18:04
Martedì, 23/04/2013
Testo quotato

Postato originariamente da Poggi Marco:

Ciao !

Con il c, è possibile tale effetto combinando le funzioni kbhit()  - http://www.programmingsimplified.com/c/conio.h/kbhit - e getchar().



Grazie :k:, non sapevo dell' esistenza di questa funzione kbhit(). getchar la conosco e la uso invece di system("pause")...ma ha un problema nell' input, per inserire dentro una variabile string dovrei convertire ogni volta il corrispondente ascii di ogni tasto, o sbaglio?. Potrei usare qualche altra funzione che non fa l' echo :-?

Ultima modifica effettuata da Michael.Kiske il 23/04/2013 alle 18:04
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:12
Martedì, 23/04/2013
Le soluzioni sono molte, ad esempio puoi utilizzare l' operatore +  (http://www.cplusplus.com/reference/string/string/operator+/ ) per aggiungere il garattere restituito dalla getchar() . Oppure salvare il carattere premuto su una variabile char,  fare gli opportuni controlli, ed eventualmente aggiungerla alla stringa.

Ultima modifica effettuata da Poggi Marco il 23/04/2013 alle 18:13
PM Quote
Avatar
Michael.Kiske (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/04/2013

Segnala al moderatore
Postato alle 18:16
Martedì, 23/04/2013
Testo quotato

Postato originariamente da Poggi Marco:

Le soluzioni sono molte, ad esempio puoi utilizzare l' operatore +  (http://www.cplusplus.com/reference/string/string/operator+/ ) per aggiungere il garattere restituito dalla getchar() . Oppure salvare il carattere premuto su una variabile char,  fare gli opportuni controlli, ed eventualmente aggiungerla alla stringa.



Che dire, grazie mille :k:.

PM Quote